﻿using System;
using System.Collections.Generic;
using System.Text;

namespace HITs
{
    /// <summary>
    /// NGD:1-Open:2-High:3-Low:4-Close:5-Volume:6
    /// </summary>
    public class NgayGiaoDich
    {
        #region ----- Biến -----
        private string _ngayGiaoDich;
        private float _giaMoCua;
        private float _giaDongCua;
        private float _giaCaoNhat;
        private float _giaThapNhat;

        private int _khoiLuongGiaoDich;
        #endregion

        #region ------ Hàm khởi tạo -----
        public NgayGiaoDich(string ngayGiaoDich, float giaMoCua, float giaDongCua, float giaCaoNhat, float giaThapNhat, int khoiLuongGiaoDich)
        {
            _ngayGiaoDich = ngayGiaoDich;

            _giaMoCua = giaMoCua;
            _giaDongCua = giaDongCua;
            _giaCaoNhat = giaCaoNhat;
            _giaThapNhat = giaThapNhat;
                     
            _khoiLuongGiaoDich = khoiLuongGiaoDich;
        }

        public NgayGiaoDich(string ngayGiaoDich, string giaMoCua, string giaDongCua, string giaCaoNhat, string giaThapNhat, string khoiLuongGiaoDich)
        {
            _ngayGiaoDich = ngayGiaoDich;

            _giaMoCua = float.Parse(giaMoCua);
            _giaDongCua = float.Parse(giaDongCua);
            _giaCaoNhat = float.Parse(giaCaoNhat);
            _giaThapNhat = float.Parse(giaThapNhat);
                        
            _khoiLuongGiaoDich = (int)long.Parse(khoiLuongGiaoDich);
        }
        #endregion

        #region ------ Phương thức ------
      
        /// <summary>
        /// Tính giá tổng hợp từ các hệ số của giá: mở cửa, đóng cửa, cao nhất và thấp nhất
        /// </summary>
        /// <param name="HeSoGiaMoCua"></param>
        /// <param name="HeSoGiaDongCua"></param>
        /// <param name="HeSoGiaCaoNhat"></param>
        /// <param name="HeSoGiaThapNhat"></param>
        /// <returns></returns>
        public float TinhGiaTongHop(float HeSoGiaMoCua, float HeSoGiaDongCua, float HeSoGiaCaoNhat, float HeSoGiaThapNhat)
        {            
            float total = HeSoGiaCaoNhat + HeSoGiaDongCua + HeSoGiaMoCua + HeSoGiaThapNhat;
            float result = (HeSoGiaMoCua * _giaMoCua) + (HeSoGiaDongCua * _giaDongCua) + (HeSoGiaCaoNhat * _giaCaoNhat) + (HeSoGiaThapNhat * _giaThapNhat);
            result = (float)Math.Round(result / total, 3);
            return result;
        }

        /// <summary>
        /// Tính giá tổng hợp từ các giá trị hệ số của CoreFunctions
        /// </summary>
        /// <returns></returns>
        public float TinhGiaTongHop()
        {
            return TinhGiaTongHop(CoreFunctions.HeSoGiaMoCua, CoreFunctions.HeSoGiaDongCua, CoreFunctions.HeSoGiaCaoNhat, CoreFunctions.HeSoGiaThapNhat);
        }

        public static int CompareNgayGiaoDich_NgayGiaoDich_DES(NgayGiaoDich a, NgayGiaoDich b)
        {
            int ngayA = int.Parse(a.NgayGiaoDich_Str);
            int ngayB = int.Parse(b.NgayGiaoDich_Str);

            if (ngayA > ngayB)
                return -1;
            else
                if (ngayA == ngayB)
                    return 0;
                else
                    return 1;
        }
        #endregion

        #region ------ Thuộc tính -------
        public string NgayGiaoDich_Str
        {
            get { return _ngayGiaoDich; }
        }

        public float GiaMoCua
        {
            get { return _giaMoCua; }
        }

        public float GiaDongCua
        {
            get { return _giaDongCua; }
        }

        public float GiaCaoNhat
        {
            get { return _giaCaoNhat; }
        }

        public float GiaThapNhat
        {
            get { return _giaThapNhat; }
        }

        public int KhoiLuongGiaoDich
        {
            get { return _khoiLuongGiaoDich; }
                
        }

        public override string ToString()
        {
            string text = _ngayGiaoDich + "  " + _giaMoCua + "  " + _giaDongCua + "  " + _giaCaoNhat + "  " + _giaThapNhat + "  " + _khoiLuongGiaoDich;
            return text;
        }
        #endregion
    }
}
